/**
 * 此文件用于替代手动更新 cordova-plugin-ths-baidulocation 所需的 BD_AK 值
 * 此文件在 ionic cap sync 命令执行前，自动执行
 * 需要在 package.json 文件的 scripts 位置，添加配置："capacitor:sync:before": "node ./cap-sync-bf.js"
 */

// eslint-disable-next-line @typescript-eslint/no-var-requires
const fs = require('fs');
// 获取capacitor.config.json 配置信息
const capacitorConfig = JSON.parse(process.env.CAPACITOR_CONFIG);

// 读取 xml 文件模块
// eslint-disable-next-line @typescript-eslint/no-var-requires
const xml2js = require('xml2js');
let window;

// cordova-plugin-ths-baidulocation 插件 配置文件地址
const filePath = __dirname + '/node_modules/cordova-plugin-ths-baidulocation/plugin.xml';
// const xmldoc = loadXmlFile(configXmlPath);
// const elements = xmldoc.getElementsByTagName("widget")[0];
// console.log(xmldoc)
// 读取configxml，修改配置

// 读取 cordova-plugin-ths-baidulocation 插件配置文件内容
fs.readFile(filePath, 'utf8', function (err, data) {
    // console.log('filePath===', filePath)
    if (err) {
        console.log('读取 cordova-plugin-ths-baidulocation 插件配置文件内容时，发生错误 ==== ', err);
        throw err;
    }
    // 将 XML数据 转换为 JSON对象
    xml2js.parseString(data, (err, result) => {
        // console.log('result===', result)
        if (err) {
            console.log('将 XML数据 转换为 JSON对象时，发生错误 ==== ', err);
            throw err;
        }

        // 根据配置里边的值，修改插件中 BD_AK 的值
        result.plugin.platform[0]['config-file'][2]['meta-data'][0]['$']['android:value'] = capacitorConfig.customConfig.BD_AK;
        console.log('插件中的 BD_AK 被修改为 ==== ', result.plugin.platform[0]['config-file'][2]['meta-data'][0]['$']['android:value']);

        // 将 JSON数据 转换为 XML数据 
        const builder = new xml2js.Builder();
        const xml = builder.buildObject(result);

        // 将更新后的 xml 写入文件
        fs.writeFile(filePath, xml, (err) => {
            if (err) {
                console.log('将更新后的 xml 写入文件时，发生错误 ==== ', err);
                throw err;
            }
            console.log(`更新后的 xml，成功写入了文件`);
        });
    });
    // const  result = data.replace(/string to be replaced/g, 'replacement');

    // fs.writeFile(filePath, result, 'utf8', function (err) {
    //    if (err) return console.log(err);
    // });
});

// 修改video压缩插件applid_id没有执行的问题
// var applicationId = capacitorConfig.appId;
// console.log('applicationId====', applicationId);
// var pluginPath = __dirname + '/node_modules/cordova-plugin-video-trimming-editor/src/android/src/';
// var sourcePath = pluginPath + "features/trim/VideoTrimmerActivity.java";
// var source = fs.readFileSync(sourcePath, 'utf-8');
// fs.writeFileSync(sourcePath, source.replace('#{APPLICATION_ID}', applicationId));
// sourcePath = pluginPath + "utils/StorageUtil.java";
// source = fs.readFileSync(sourcePath, 'utf-8');
// fs.writeFileSync(sourcePath, source.replace('#{APPLICATION_ID}', applicationId));